package org.wen.soft;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.wen.soft.generate.service.GeneraService;
import org.wen.soft.util.FileUtil;
import org.wen.soft.util.PropUtil;

/**
 * 此代码凭记忆重写了一遍，由于时间有限，后续代码可能会进行补充，也可能暂时告一段落，你可以根据需要来对项目进行补充。
 * 主干代码大体已经完成，你只需要补全模板文件，结合微调generate.model的实体（这需要通过实际生成结果进行查看及修复），除此之外，我有一些建议：
 * 1.Entity格式的模板拓展，对于领域对象来说为每个方法构建单元测试是不妥的，可以通过bean的注入、注册注解来区分是否为实体或领域对象
 * 2.import类，解决手动导入生成的测试类的依赖性类。
 * 3.枚举类、抽象类需要做特殊处理
 * 4.调整生成过程中产生的日志，以方便定位文件
 * 5.拓展生成的方法，比如单文件获取等、多种模板生成等，方便在生成过程中的调试。
 */
@SpringBootApplication
public class BuilderApplication {

    /**
     * SpringBoot Application启动
     */
    public static ConfigurableApplicationContext start(Class<?> clazz, String[] args) {
        SpringApplication application = new SpringApplication(clazz);
        application.setWebApplicationType(WebApplicationType.NONE);
        return application.run(args);
    }

    /**
     * 程序入口
     */
    public static void main(String[] args) {
        ConfigurableApplicationContext context = start(BuilderApplication.class, args);


        GeneraService generaService = context.getBean(GeneraService.class);
        generaService.generaByFiles(PropUtil.template, "F:\\00-Code\\gitee_pros\\asm-builder\\target\\classes\\org\\wen\\soft\\ATest.class");



    }
}